home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / GIMP 2.6.8 / gimp-2.6.8-i686-setup.exe / {app} / share / gimp / 2.0 / scripts / addborder.scm < prev    next >
Text File  |  2009-12-15  |  6KB  |  187 lines

  1. ; GIMP - The GNU Image Manipulation Program
  2. ; Copyright (C) 1995 Spencer Kimball and Peter Mattis
  3. ;
  4. ; This program is free software; you can redistribute it and/or modify
  5. ; it under the terms of the GNU General Public License as published by
  6. ; the Free Software Foundation; either version 2 of the License, or
  7. ; (at your option) any later version.
  8. ;
  9. ; This program is distributed in the hope that it will be useful,
  10. ; but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12. ; GNU General Public License for more details.
  13. ;
  14. ; You should have received a copy of the GNU General Public License
  15. ; along with this program; if not, write to the Free Software
  16. ; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  17. ;
  18. ; Copyright (C) 1997 Andy Thomas alt@picnic.demon.co.uk
  19. ;
  20. ; Version 0.2 10.6.97 Changed to new script-fu interface in 0.99.10
  21.  
  22. ; Delta the colour by the given amount. Check for boundary conditions
  23. ; If < 0 set to zero
  24. ; If > 255 set to 255
  25. ; Return the new value
  26.  
  27. (define (script-fu-addborder aimg adraw xsize ysize colour dvalue)
  28.  
  29.   (define (deltacolour col delta)
  30.     (let* ((newcol (+ col delta)))
  31.       (if (< newcol 0) (set! newcol 0))
  32.       (if (> newcol 255) (set! newcol 255))
  33.       newcol
  34.     )
  35.   )
  36.  
  37.   (define (adjcolour col delta)
  38.     (mapcar (lambda (x) (deltacolour x delta)) col)
  39.   )
  40.  
  41.   (define (gen_top_array xsize ysize owidth oheight width height)
  42.     (let* ((n_array (cons-array 10 'double)))
  43.       (aset n_array 0 0 )
  44.       (aset n_array 1 0 )
  45.       (aset n_array 2 xsize)
  46.       (aset n_array 3 ysize)
  47.       (aset n_array 4 (+ xsize owidth))
  48.       (aset n_array 5 ysize)
  49.       (aset n_array 6 width)
  50.       (aset n_array 7 0 )
  51.       (aset n_array 8 0 )
  52.       (aset n_array 9 0 )
  53.       n_array)
  54.   )
  55.  
  56.   (define (gen_left_array xsize ysize owidth oheight width height)
  57.     (let* ((n_array (cons-array 10 'double)))
  58.       (aset n_array 0 0 )
  59.       (aset n_array 1 0 )
  60.       (aset n_array 2 xsize)
  61.       (aset n_array 3 ysize)
  62.       (aset n_array 4 xsize)
  63.       (aset n_array 5 (+ ysize oheight))
  64.       (aset n_array 6 0 )
  65.       (aset n_array 7 height )
  66.       (aset n_array 8 0 )
  67.       (aset n_array 9 0 )
  68.       n_array)
  69.   )
  70.  
  71.   (define (gen_right_array xsize ysize owidth oheight width height)
  72.     (let* ((n_array (cons-array 10 'double)))
  73.       (aset n_array 0 width )
  74.       (aset n_array 1 0 )
  75.       (aset n_array 2 (+ xsize owidth))
  76.       (aset n_array 3 ysize)
  77.       (aset n_array 4 (+ xsize owidth))
  78.       (aset n_array 5 (+ ysize oheight))
  79.       (aset n_array 6 width)
  80.       (aset n_array 7 height)
  81.       (aset n_array 8 width )
  82.       (aset n_array 9 0 )
  83.       n_array)
  84.   )
  85.  
  86.   (define (gen_bottom_array xsize ysize owidth oheight width height)
  87.     (let* ((n_array (cons-array 10 'double)))
  88.       (aset n_array 0 0 )
  89.       (aset n_array 1 height)
  90.       (aset n_array 2 xsize)
  91.       (aset n_array 3 (+ ysize oheight))
  92.       (aset n_array 4 (+ xsize owidth))
  93.       (aset n_array 5 (+ ysize oheight))
  94.       (aset n_array 6 width)
  95.       (aset n_array 7 height)
  96.       (aset n_array 8 0 )
  97.       (aset n_array 9 height)
  98.       n_array)
  99.   )
  100.  
  101.   (let* ((img (car (gimp-drawable-get-image adraw)))
  102.          (owidth (car (gimp-image-width img)))
  103.          (oheight (car (gimp-image-height img)))
  104.          (width (+ owidth (* 2 xsize)))
  105.          (height (+ oheight (* 2 ysize)))
  106.          (layer (car (gimp-layer-new img
  107.                                      width height
  108.                                      (car (gimp-drawable-type-with-alpha adraw))
  109.                                      "Border-Layer" 100 NORMAL-MODE))))
  110.  
  111.     (gimp-context-push)
  112.  
  113.     (gimp-image-undo-group-start img)
  114.  
  115.     (gimp-image-resize img
  116.                        width
  117.                        height
  118.                        xsize
  119.                        ysize)
  120.  
  121.     (gimp-image-add-layer img layer 0)
  122.     (gimp-drawable-fill layer TRANSPARENT-FILL)
  123.  
  124.     (gimp-context-set-background (adjcolour colour dvalue))
  125.     (gimp-free-select img
  126.                       10
  127.                       (gen_top_array xsize ysize owidth oheight width height)
  128.                       CHANNEL-OP-REPLACE
  129.                       0
  130.                       0
  131.                       0.0)
  132.     (gimp-edit-fill layer BACKGROUND-FILL)
  133.     (gimp-context-set-background (adjcolour colour (/ dvalue 2)))
  134.     (gimp-free-select img
  135.                       10
  136.                       (gen_left_array xsize ysize owidth oheight width height)
  137.                       CHANNEL-OP-REPLACE
  138.                       0
  139.                       0
  140.                       0.0)
  141.     (gimp-edit-fill layer BACKGROUND-FILL)
  142.     (gimp-context-set-background (adjcolour colour (- 0 (/ dvalue 2))))
  143.     (gimp-free-select img
  144.                       10
  145.                       (gen_right_array xsize ysize owidth oheight width height)
  146.                       CHANNEL-OP-REPLACE
  147.                       0
  148.                       0
  149.                       0.0)
  150.  
  151.     (gimp-edit-fill layer BACKGROUND-FILL)
  152.     (gimp-context-set-background (adjcolour colour (- 0 dvalue)))
  153.     (gimp-free-select img
  154.                       10
  155.                       (gen_bottom_array xsize ysize owidth oheight width height)
  156.                       CHANNEL-OP-REPLACE
  157.                       0
  158.                       0
  159.                       0.0)
  160.  
  161.     (gimp-edit-fill layer BACKGROUND-FILL)
  162.     (gimp-selection-none img)
  163.     (gimp-image-undo-group-end img)
  164.     (gimp-displays-flush)
  165.  
  166.     (gimp-context-pop)
  167.     )
  168. )
  169.  
  170. (script-fu-register "script-fu-addborder"
  171.   _"Add _Border..."
  172.   _"Add a border around an image"
  173.   "Andy Thomas <alt@picnic.demon.co.uk>"
  174.   "Andy Thomas"
  175.   "6/10/97"
  176.   "*"
  177.   SF-IMAGE       "Input image" 0
  178.   SF-DRAWABLE    "Input drawable" 0
  179.   SF-ADJUSTMENT _"Border X size" '(12 1 250 1 10 0 1)
  180.   SF-ADJUSTMENT _"Border Y size" '(12 1 250 1 10 0 1)
  181.   SF-COLOR      _"Border color" '(38 31 207)
  182.   SF-ADJUSTMENT _"Delta value on color" '(25 1 255 1 10 0 1)
  183. )
  184.  
  185. (script-fu-menu-register "script-fu-addborder"
  186.                          "<Image>/Filters/Decor")
  187.